package com.ea.report.pojo.po;

import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.HashMap;

@Getter
@AllArgsConstructor
public enum ReportPropertiesIndex {

    /**
     * 侵略性
     */
    Aggression(null, 7L, 5),
    /**
     * 紧张/焦虑 -> 焦虑
     */
    Anxiety(null, 8L, 6),
    /**
     * 活力
     */
    Energy(null, 9L, 7),
    /**
     * 抑郁
     */
    Depression(null, 10L, 8),
    /**
     * 抑制力
     */
    Inhibition(null, 11L, 9),
    /**
     * 压力
     */
    Stress(null, 12L, 10),
    /**
     * 平衡
     */
    Balance(null, 13L, 11),
    /**
     * 可疑
     */
    Suspect(null, 14L, 12),
    /**
     * 自信
     */
    Charm(null, 15L, 13),
    /**
     * 自我调节
     */
    SelfRegulation(null, 16L, 14),
    /**
     * 情绪稳定性
     */
    Neuroticism(null, 17L, 15),
    /**
     * 幸福
     */
    Happiness(null, 18L, 16),

    /**
     * 心率
     */
    HeartRate(null, 19L, 1),
    /**
     * 呼吸
     */
    BreathRate(null, 20L, 2),
    /**
     * 血压
     */
    BloodPressure(null, 21L, 3),
    /**
     * 血氧
     */
    BloodOxygen(null, 22L, 4),

    MentalRate("心理变化率", null, 17),
    /**
     * 感情状况分布图
     */
    PhyEmotion("生理情绪", null, 18),
    PosEmotion("正面情绪", null, 19),
    NegEmotion("负面情绪", null, 20),

    Extraversion("外向性", null, 21),
    Stability("稳定性", null, 22),
    /**
     * 心理测试频谱图
     */
    MentalTestSpectrum("心理测试频谱图", null, 23),
    /**
     * 平均频率
     */
    MentalRateFrequency("平均频率", null, 24),
    /**
     * 个人常模
     */
    PersonalNorm("个人常模", null, 25),
    /**
     * 群体常模
     */
    GroupNorm("群体常模", null, 26),
    ;
    static final HashMap<String, ReportPropertiesIndex> map;

    static {
        HashMap<String, ReportPropertiesIndex> hashMap = new HashMap<>(ReportPropertiesIndex.values().length);
        for (ReportPropertiesIndex value : ReportPropertiesIndex.values()) {
            if (value.propertiesName != null) {
                hashMap.put(value.propertiesName, value);
            } else if (value.defaultCompanyConfId != null) {
                hashMap.put(value.defaultCompanyConfId.toString(), value);
            }
        }
        map = hashMap;
    }

    final String propertiesName;
    final Long defaultCompanyConfId;
    final Integer index;

    public static ReportPropertiesIndex getIndexByTitleOrDefaultId(String key) {
        return map.get(key);
    }
}
